package com.atguig.e_lambda;
/*
        Lambda表达式的简化格式 :
        1. 当重写方法的方法体有且仅有一句,那么可以省略包裹方法体的大括号 和 语句结尾的分号 如果有return ,return也可以省略
                条件 : 要省略必须一起省略
        2. 重写方法的形参类型都可以省略 , 形参名是可以改的 [方法体内的形参名也要改]
        3. 如果重写方法的形参列表有且仅有 一个形参,那么包裹形参的小括号也可以省略
 */
public class Demo3 {
    public static void main(String[] args) {
        //创建InterD对象
        InterD id = new InterD() {
            @Override
            public Integer parse(String num) {
                return Integer.parseInt(num);
            }
        };

        Integer num1 = id.parse("1000");
        System.out.println("num1 = " + num1);

        System.out.println("----------------------------");
        //创建InterD对象
        InterD id1 = num -> Integer.parseInt(num);

        Integer num2 = id1.parse("1000");
        System.out.println("num2 = " + num2);

        System.out.println("----------------------------");

        //创建InterD对象
        InterD id2 =  Integer::parseInt; //方法引用

        Integer num3 = id2.parse("1000");
        System.out.println("num3 = " + num3);

    }
}
@FunctionalInterface
interface InterD{
    public abstract Integer parse(String num);
}